package ejb;

import java.util.List;
import java.util.Vector;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import vo.ArticuloVO;
import entity.Articulo;

@Stateless
public class AdministradorArticuloBean implements AdministradorArticulo
{
	@PersistenceContext(unitName = "articulos")
	private EntityManager em;

	public void guardarArticulo(ArticuloVO articulovo)
	{
		Articulo articulo = new Articulo();
		
		articulo.setVO(articulovo);
		em.merge(articulo);

		System.out.println("Se persistio articulo en database");
	}

	public ArticuloVO obtenerArticulo(int codigoArticulo)
	{
		System.out.println("obtenerArticulo en AdministradorArticuloBean");
		
		// Busca articulo en database
		Articulo articulo=null;
		articulo=em.find(Articulo.class, codigoArticulo);
		
		System.out.println("Se busco articulo en database");
		if(articulo!=null)
		{
			System.out.println("Articulo: " + articulo.getCodigo());
		}
		else
		{
			System.out.println("Articulo: null");
			return null;
		}
		
		System.out.println("obtenerArticulo en AdministradorArticuloBean completa");
		return articulo.getVO();
	}
	
	@SuppressWarnings("unchecked")
	public Vector obtenerArticulos()
	{
		List list=null;
		Vector listvo=new Vector();
		Articulo articulo;
		
		list=em.createQuery("select a from Articulo as a")
							.getResultList();

		if(list.size()==0)
		{
			return listvo;
		}
		
		for(int i=0;i<list.size();i++)
		{
			articulo=(Articulo)list.get(i);
			listvo.add(articulo.getVO());
		}
		
		System.out.println("Obtiene todos los articulos desde el Bean de AdministradorArticulo");
		return listvo;
	}

	public void agregarStock(int codigoArticulo, int astock)
	{
		ArticuloVO articulovo;
		int existente;
		Articulo articulo;
		
		articulovo=this.obtenerArticulo(codigoArticulo);
		
		if(articulovo!=null)
		{
			existente=articulovo.getStock();
			articulovo.setStock(existente+astock);
			
			articulo=new Articulo();
			articulo.setVO(articulovo);
			em.merge(articulo);
		}
	}
}
